package com.edu.controller;

import com.edu.bean.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class ModelController {

    /**
     * @ModelAttribute() 作用1
     *  当前Controller里的所有方法 在执行之前，必须要先执行@ModelAttribute 标记的方法
     */
    @ModelAttribute()
    public void model1(){
        System.out.println("执行了 model1的方法");
    }

    /**
     * @ModelAttribute() 不加任何参数，并且标记的方法 返回值类型为void,那么可以在方法中 加入一个参数Model model
     *  方法内向Model中 存放的数据，再其他方法执行时，可以从Model中取出来
     */
    @ModelAttribute()
    public void model2(Model model){
        model.addAttribute("msg","hello");
        model.addAttribute("power","查");
        System.out.println("执行了 model2的方法");
    }

    /**
     * @ModelAttribute("name")
     *  方法中，方法不用加Model,方法的返回值不能为void,那么会把 方法的返回值 存入在model里，名字叫 name
     */
    @ModelAttribute("note")
    public String model3(){
        System.out.println("执行了model3的");
        return "hello note";
    }

    @ModelAttribute("u")
    public User model4(){
        User user = new User();
        user.setUserId(1);
        user.setUsername("dede");
        user.setPassword("123456");
        return user;
    }




    @RequestMapping("/modelTest")
    public String test01(Model model){
        System.out.println("执行了 modelTest的 test01");
        System.out.println(model.getAttribute("msg"));
        System.out.println(model.getAttribute("power"));
        System.out.println(model.getAttribute("note"));
        return "forward:index.jsp";
    }


    @RequestMapping("/modelTest2")
    public String test02(Model model){
        System.out.println("执行了 modelTest的 test02");
        System.out.println(model.getAttribute("msg"));
        System.out.println(model.getAttribute("power"));
        System.out.println(model.getAttribute("note"));
        return "forward:index.jsp";
    }

    @RequestMapping("/modelTest3")
    public String test03(@ModelAttribute("u") User user){
        System.out.println(user);
        return "forward:index.jsp";
    }
}
